package org.epanetgrid.otimizacao.objfunctions;

import java.util.List;
import java.util.Set;

import org.epanetgrid.resultado.ResultadoSimulacao;
import org.epanetgrid.resultado.output.IAlarme;

/**
 * Calcula o intervalo do primeiro alarme.
 * 
 * @author alan
 */
public class PontoDeFalhaControleObjectiveFunction implements ObjectiveFunction<ResultadoSimulacao, Long> {

	private static final long serialVersionUID = 6117840259275341434L;

	/**
	 * @param resultado Resultado da simulação
	 * @return retorna -1 caso não ocorram alarmes, caso contrário o indice do primeiro alarme encontrado 
	 */
	public Long evaluate(ResultadoSimulacao resultado) {
		
		List<Set<IAlarme>> alarmes = resultado.getAlarmes();
		
		for (int i = 0; i < alarmes.size(); i++) {
			if ( !alarmes.get(i).isEmpty() ) {
				if (i == 0) {
					System.out.println("intervalo " + i);
					for (IAlarme alarme : alarmes.get(i)) {
						System.out.println(alarme.getDate() + " " + alarme.getDescricao());
					}
				}
				return (long)i;
			}
		}
		
		return -1L;
	}

}
